EC2 Instance Connect Endpoint と Session Managerの違いをまとめてみた
はじめに
先日、EIC エンドポイントがリリースされました。
EIC エンドポイントを使用すると、パブリック IP アドレスを使用せずに プライベート サブネット内のEC2 インスタンスに SSH および RDP 接続できます。
ただし、セッションマネージャーと何が違うのか、どのように使い分けるとよいか分からなかったため、比較しまとめました。
EIC エンドポイントについては、以下を参考ください。
構築で必要な作業
EIC エンドポイントとセッションマネージャーで、構築作業のうち、共通の作業は除きます。
作業自体は、EIC エンドポイントの方が楽ですね。
EIC エンドポイント
- EIC エンドポイント作成する
セッションマネージャー
- EC2 インスタンス用のIAMロールを作成し、EC2 インスタンスにアタッチする
- 以下のVPCエンドポイントを作成
- ec2messages.region.amazonaws.com
- ssm.region.amazonaws.com
- ssmmessages.region.amazonaws.com
可用性
EIC エンドポイントは、AZ障害時は利用できなくなるため、セッションマネージャーに軍配が上がります。
EIC エンドポイント
1つのVPCに1つのEIC エンドポイントしか作成できないため、EICのエンドポイントがあるサブネットにAZ障害が起きると使えない
セッションマネージャー
複数のサブネットにVPCエンドポイントが作成できるため、1つのAZで障害が起きても使える
ログ出力
セッションマネージャーは、Amazon CloudWatch Logs、Amazon S3などの複数に操作ログを出力できます。
EIC エンドポイント
- AWS CloudTrailのみです。
接続ログは出力できますが、操作ログは出力できません。
セッションマネージャー
- AWS CloudTrail、Amazon CloudWatch Logs、Amazon S3にログを保存できます。
下記の記事の通り、操作ログも保存できます。
接続の制御
EIC エンドポイント
EIC エンドポイントへのアクセスは、IAMユーザー側で制限できます。
セキュリティグループにより、特定のCIDRにあるEIC エンドポイントのみを接続するなどの制限も可能です
セッションマネージャー
セッションマネージャーの利用には、IAMユーザーやEC2インスタンスにアタッチされたIAMロールによる制限が可能です。
セキュリティグループ
セッションマネージャーは、セキュリティグループのインバウンドルールの設定が不要なので、よりセキュアです。
EIC エンドポイント
接続するEC2インスタンスのセキュリティグループは、EIC エンドポイントからのインバウンドルールで、ポート22を開ける必要があります。
セッションマネージャー
接続するEC2インスタンスのセキュリティグループは、インバウンドルールは不要です。
料金
EIC エンドポイントの利用料金が無料なのは、驚きです
もちろん、データの転送料金はどちらもかかります。
EIC エンドポイント
EIC エンドポイントは、利用料金が無料です!
セッションマネージャー
- インターフェース型VPCエンドポイントの利用料金
- 0.014 USD/時間 * 3 (VPCエンドポイント数)
- 月に30 USDほど。可用性を高めるため、2つのAZに作成する場合、おおよそ60 USDかかります。
制約
1つのVPCの複数のサブネットで、EIC エンドポイントが作成できず、残念です。
EIC エンドポイント
- AWS アカウントごとに作成できるEIC エンドポイントは、5つまで
- 現時点(2023年6月14日)では、上限緩和できない
- ただし、VPCピアリングを利用することで、1つのEIC エンドポイントで複数のVPC上のEC2 インスタンスに接続できます
- VPCごとに作成できるEIC エンドポイントは、1つ
- 1つのサブネットにしか作成できないため、AZ障害時、接続できない可能性があります。
セッションマネージャー
- VPCごとに作成できるインターフェイス型エンドポイントは、50。上限緩和可能
対応するAWSリソース
セッションマネージャーは、エージェントをインストールするとオンプレミスのサーバーでも利用できます
EIC エンドポイント
EC2 インスタンスのみ
セッションマネージャー
EC2 インスタンス、オンプレミスのサーバー
EC2 インスタンスに必要なエージェント
EIC エンドポイント
EC2 Instance Connect 利用するには、EC2 Instance Connect パッケージ(EICパッケージ)がEC2 インスタンスにインストールされている必要があります。
AWSが提供する以下のOSバージョンでは、EICパッケージがインストール済みの可能性が高いです
- Amazon Linux 2 2.0.20190618 以降
- Ubuntu 20.04以降
AWSが提供する以下のOSバージョンには、EICパッケージのインストールが必要です
- Amazon Linux 2 2.0.20190618 以前
- Ubuntu 16.04以降~20.04以前
インストール方法は、こちらを参照ください
セッションマネージャー
セッションマネージャーを利用するには、AWS Systems Manager エージェント (SSM Agent)がEC2 インスタンスにインストールされている必要があります。
AWSが提供する以下のOSバージョンには、SSM Agentがインストール済みの可能性が高いです
- 2017 年 9 月以降の Amazon Linux Base AMI
- Amazon Linux 2
- Amazon Linux 2 ECS に最適化されたベース AMIs
- Amazon Linux 2023 (AL2023)
- Amazon EKS 最適化 Amazon Linux AMIs
- macOS 10.14.x (Mojave)、10.15.x (Catalina)、11.x (Big Sur)
- SUSE Linux Enterprise Server(SLES) 12 と 15
- Ubuntu Server 16.04、18.04、および 20.04
- 2016 年 11 月以降に公開された Windows Server 2008-2012 R2 AMIs
- Windows Server 2016、2019、および 2022
インストールされていない場合、以下のドキュメントを参考にインストールしてください
最大セッション時間
EIC エンドポイント
最大1時間です
セッションマネージャー
最大24時間です
アイドルセッションタイムアウトは、最大60分までです。
アイドルセッションタイムアウトとは、セッションが終了するまでにユーザーが非アクティブでいられる時間のことです
最後に
色々な違いがあることがわかりました。
個人的には、可用性重視の場合は、セッションマネージャーを選択し、コスト重視であれば、EIC エンドポイントを選択するのがよいかと思いました。
ぜひ参考にしてみてください。